package com.wigwamlabs.veckify;
import android.text.format.DateFormat;
import junit.framework.TestCase;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import static com.wigwamlabs.veckify.AlarmUtils.DAYS_ALL;
import static com.wigwamlabs.veckify.AlarmUtils.DAY_WEDNESDAY;
public class AlarmSchedulingTest extends TestCase {
public void testAllDaysRepeat() throws Exception {
assertNextAlarmEquals("2013-04-22 09:00", 9, 0, DAYS_ALL, 0, "2013-04-22 08:30");
assertNextAlarmEquals("2013-04-23 09:00", 9, 0, DAYS_ALL, 0, "2013-04-22 09:30");
assertNextAlarmEquals("2013-04-23 09:00", 9, 0, DAYS_ALL, 0, "2013-04-23 08:30");
assertNextAlarmEquals("2013-04-24 09:00", 9, 0, DAYS_ALL, 0, "2013-04-23 09:30");
assertNextAlarmEquals("2013-04-24 09:00", 9, 0, DAYS_ALL, 0, "2013-04-24 08:30");
assertNextAlarmEquals("2013-04-25 09:00", 9, 0, DAYS_ALL, 0, "2013-04-24 09:30");
assertNextAlarmEquals("2013-04-25 09:00", 9, 0, DAYS_ALL, 0, "2013-04-25 08:30");
assertNextAlarmEquals("2013-04-26 09:00", 9, 0, DAYS_ALL, 0, "2013-04-25 09:30");
assertNextAlarmEquals("2013-04-26 09:00", 9, 0, DAYS_ALL, 0, "2013-04-26 08:30");
assertNextAlarmEquals("2013-04-27 09:00", 9, 0, DAYS_ALL, 0, "2013-04-26 09:30");
assertNextAlarmEquals("2013-04-27 09:00", 9, 0, DAYS_ALL, 0, "2013-04-27 08:30");
assertNextAlarmEquals("2013-04-28 09:00", 9, 0, DAYS_ALL, 0, "2013-04-27 09:30");
assertNextAlarmEquals("2013-04-28 09:00", 9, 0, DAYS_ALL, 0, "2013-04-28 08:30");
assertNextAlarmEquals("2013-04-29 09:00", 9, 0, DAYS_ALL, 0, "2013-04-28 09:30");
}
public void testOneDayRepeat() throws Exception {
assertNextAlarmEquals("2013-04-24 09:00", 9, 0, DAY_WEDNESDAY, 0, "2013-04-22 08:30");
assertNextAlarmEquals("2013-04-24 09:00", 9, 0, DAY_WEDNESDAY, 0, "2013-04-23 08:30");
assertNextAlarmEquals("2013-04-24 09:00", 9, 0, DAY_WEDNESDAY, 0, "2013-04-24 08:30");
assertNextAlarmEquals("2013-05-01 09:00", 9, 0, DAY_WEDNESDAY, 0, "2013-04-24 09:30");
assertNextAlarmEquals("2013-05-01 09:00", 9, 0, DAY_WEDNESDAY, 0, "2013-04-25 08:30");
assertNextAlarmEquals("2013-05-01 09:00", 9, 0, DAY_WEDNESDAY, 0, "2013-04-26 08:30");
assertNextAlarmEquals("2013-05-01 09:00", 9, 0, DAY_WEDNESDAY, 0, "2013-04-27 08:30");
assertNextAlarmEquals("2013-05-01 09:00", 9, 0, DAY_WEDNESDAY, 0, "2013-04-28 08:30");
}
private void assertNextAlarmEquals(String expectedTime, int hour, int minute, int repeatDays, long oneoffTimeMs, String nowTime) throws Exception {
final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd kk:mm");
final Date date = formatter.parse(nowTime);
final Calendar cal = AlarmUtils.getNextAlarmTime(true, hour, minute, repeatDays, oneoffTimeMs, date.getTime());
assertEquals(expectedTime, DateFormat.format("yyyy-MM-dd kk:mm", cal));
}
}